const api = require('../../utils/api.js')
const mockData = require('../../utils/data.js')

const PLACEHOLDER_IMAGE = 'https://images.unsplash.com/photo-1523875194681-bedd468c58bf?w=800&h=600&fit=crop'

// 标准化产品数据（与index.js保持一致）
function normalizeProduct(item = {}) {
  if (!item) {
    return null
  }

  const priceValue = item.marketPrice != null ? item.marketPrice : item.price
  const price = priceValue != null && priceValue !== ''
    ? Number(priceValue).toFixed(2)
    : '--'

  const originalPriceValue = item.originalPrice != null ? item.originalPrice : ''
  const onlineDateSource = item.onlineAt || item.earliestDate || ''
  const onlineDate = typeof onlineDateSource === 'string'
    ? onlineDateSource.split(' ')[0]
    : ''

  // 确保id字段正确映射（数据库返回的是productId，需要映射到id）
  const productId = item.productId != null ? item.productId : item.id

  return {
    id: productId,
    title: item.productName || item.title || '',
    location: item.city || item.destination || item.location || '',
    image: item.image || PLACEHOLDER_IMAGE,
    rating: item.rating != null ? Number(item.rating).toFixed(1) : '0.0',
    reviewCount: item.reviewCount != null ? item.reviewCount : 0,
    sales: item.salesCount != null ? item.salesCount : (item.sales != null ? item.sales : 0),
    price,
    originalPrice: originalPriceValue,
    earliestDate: onlineDate,
    productType: item.productType || 'normal',
    date: item.date || ''
  }
}

Page({
  data: {
    searchKeyword: '', // 搜索关键词
    searchHistory: [], // 搜索历史
    hotKeywords: ['北京', '上海', '杭州', '成都', '三亚', '厦门'], // 热门搜索词
    searchResults: [], // 搜索结果
    loading: false,
    hasSearched: false, // 是否已搜索
    showHistory: true // 是否显示搜索历史
  },
  
  onLoad(options) {
    // 如果从其他页面传入关键词，直接搜索
    if (options.keyword) {
      this.setData({
        searchKeyword: decodeURIComponent(options.keyword)
      })
      this.doSearch()
    }
    
    // 加载搜索历史
    this.loadSearchHistory()
  },
  
  // 加载搜索历史
  loadSearchHistory() {
    try {
      const history = wx.getStorageSync('searchHistory') || []
      this.setData({
        searchHistory: history.slice(0, 10) // 最多显示10条
      })
    } catch (e) {
      console.error('加载搜索历史失败', e)
    }
  },
  
  // 保存搜索历史
  saveSearchHistory(keyword) {
    if (!keyword || keyword.trim() === '') return
    
    try {
      let history = wx.getStorageSync('searchHistory') || []
      // 移除重复项
      history = history.filter(item => item !== keyword)
      // 添加到最前面
      history.unshift(keyword)
      // 最多保存20条
      history = history.slice(0, 20)
      wx.setStorageSync('searchHistory', history)
      this.setData({
        searchHistory: history.slice(0, 10)
      })
    } catch (e) {
      console.error('保存搜索历史失败', e)
    }
  },
  
  // 输入框输入事件
  onInput(e) {
    const keyword = e.detail.value
    this.setData({
      searchKeyword: keyword,
      showHistory: keyword === '' // 输入框为空时显示历史记录
    })
  },
  
  // 确认搜索
  onConfirm(e) {
    const keyword = e.detail.value || this.data.searchKeyword
    if (keyword && keyword.trim()) {
      this.setData({
        searchKeyword: keyword.trim()
      })
      this.doSearch()
    }
  },
  
  // 执行搜索
  doSearch() {
    const keyword = this.data.searchKeyword.trim()
    if (!keyword) {
      wx.showToast({
        title: '请输入搜索关键词',
        icon: 'none'
      })
      return
    }
    
    // 保存搜索历史
    this.saveSearchHistory(keyword)
    
    this.setData({
      loading: true,
      hasSearched: true,
      showHistory: false
    })
    
    // 优先使用后端API搜索
    api.searchProducts({ keyword })
      .then(results => {
        console.log('搜索成功，结果数量:', results ? results.length : 0)
        // 标准化搜索结果数据
        const normalizedResults = (results || []).map(normalizeProduct).filter(Boolean)
      this.setData({
          searchResults: normalizedResults,
        loading: false
      })
        
        if (normalizedResults.length === 0) {
          wx.showToast({
            title: '未找到相关结果',
            icon: 'none',
            duration: 2000
          })
        }
      })
      .catch(err => {
        console.error('搜索API失败:', err)
        // API失败时降级到本地数据搜索
        wx.showToast({
          title: '搜索服务异常，使用本地数据',
          icon: 'none',
          duration: 2000
        })
      this.searchLocal(keyword)
    })
  },
  
  // 本地数据搜索（降级方案）
  searchLocal(keyword) {
    // 模拟网络延迟
    setTimeout(() => {
      const allProducts = mockData.products || []
      
      // 搜索产品（按标题、位置匹配）
      const productResults = allProducts.filter(item => {
        const title = (item.title || '').toLowerCase()
        const location = (item.location || '').toLowerCase()
        const keywordLower = keyword.toLowerCase()
        
        return title.includes(keywordLower) || 
               location.includes(keywordLower)
      })
      
      // 标准化产品数据
      const normalizedResults = productResults.map(normalizeProduct).filter(Boolean)
      
      this.setData({
        searchResults: normalizedResults,
        loading: false
      })
      
      if (normalizedResults.length === 0) {
        wx.showToast({
          title: '未找到相关结果',
          icon: 'none',
          duration: 2000
        })
      }
    }, 300)
  },
  
  // 点击搜索历史
  onHistoryTap(e) {
    const keyword = e.currentTarget.dataset.keyword
    this.setData({
      searchKeyword: keyword
    })
    this.doSearch()
  },
  
  // 点击热门搜索词
  onHotKeywordTap(e) {
    const keyword = e.currentTarget.dataset.keyword
    this.setData({
      searchKeyword: keyword
    })
    this.doSearch()
  },
  
  // 清除搜索历史
  clearHistory() {
    wx.showModal({
      title: '提示',
      content: '确定要清除搜索历史吗？',
      success: (res) => {
        if (res.confirm) {
          try {
            wx.removeStorageSync('searchHistory')
            this.setData({
              searchHistory: []
            })
            wx.showToast({
              title: '已清除',
              icon: 'success'
            })
          } catch (e) {
            console.error('清除搜索历史失败', e)
          }
        }
      }
    })
  },
  
  // 跳转到产品详情
  goToProductDetail(e) {
    const id = e.currentTarget.dataset.id
    wx.navigateTo({
      url: `/pages/product-detail/product-detail?id=${id}`
    })
  },
  
  // 跳转到目的地详情
  goToDestination(e) {
    const id = e.currentTarget.dataset.id
    wx.navigateTo({
      url: `/pages/destination-detail/destination-detail?id=${id}`
    })
  },
  
  // 下拉刷新
  onPullDownRefresh() {
    if (this.data.hasSearched) {
      this.doSearch()
    }
    setTimeout(() => {
      wx.stopPullDownRefresh()
    }, 1000)
  }
})

